/**
 * @param {string[]} strs
 * @return {string[][]}
 */
var arr = ["eat", "tea", "tan", "ate", "nat", "bat"];

var groupAnagrams = function (strs) {
  let hashMap = new Map();
  for (let i = 0; i < strs.length; i++) {
    let str = [...strs[i]].sort().join("");
    if (hashMap.has(str)) {
      hashMap.set(str, [...hashMap.get(str), strs[i]]);
    } else {
      hashMap.set(str, [strs[i]]);
    }
  }
  return [...hashMap.values()]
};

console.log(groupAnagrams(arr));
/**
 * @param {string[]} strs
 * @return {string[][]}
 */
// ai 的答案，这个的答案貌似是好一点
var groupAnagrams = function (strs) {
  const map = new Map();

  for (const str of strs) {
    // 将字符串排序后作为键
    const sorted = str.split('').sort().join('');

    // 如果键不存在，初始化一个空数组
    if (!map.has(sorted)) {
      map.set(sorted, []);
    }

    // 将原字符串添加到对应键的数组中
    map.get(sorted).push(str);
  }

  // 将Map的值转换为二维数组返回
  return Array.from(map.values());
};